<?php

error_reporting(0);

function checkldapuser($username,$usermail,$password,$ldap_server){

	if($connect=@ldap_connect($ldap_server)){	

		ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
		ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
		//$cadena = "@ejc.ejercito.mil.co";
		$cadena = "@cgfm.col";
		$usuario = $username.$cadena;
		// enlace a la conexión
		if(($bind=@ldap_bind($connect,$usuario,$password)) == false){
			$mensajeError =  "Falla la conexi&oacute;n con el servidor LDAP";
			return $mensajeError;
		}
		// Clasificador del dominio//
		//$cadenaBusqLDAP = "DC=ejc,DC=ejercito,DC=mil,DC=co";
		$cadenaBusqLDAP = "DC=cgfm,DC=col";
		$filtro="(samaccountname=$username)";
		$solonecesito = array("samaccountname");

		if (($res_id = ldap_search($connect,$cadenaBusqLDAP,$filtro,$solonecesito)) == false) {
    		$mensajeError = "No encontrado el usuario en el &aacute;rbol LDAP <br>Connect: $connect<br>User Name: $username<br>User Mail: $usermail<br>LdapServ: $ldap_server <br>res_id:";
			return $mensajeError;
		}

		if (( $entry_id = ldap_first_entry($connect, $res_id))== false) {
			$mensajeError =  "No se obtuvieron resultados";
			return $mensajeError;
		}

		if (ldap_count_entries($connect, $res_id) != 1) {
			$mensajeError =  "El usuario $username se encontr&oacute; mas de 1 vez";
			return $mensajeError;
		}

		if (( $user_dn = ldap_get_dn($connect, $entry_id)) == false) {
			$mensajeError = "No se puede obtener el dn del usuario";
			return $mensajeError;
		}

		error_reporting( 0 );
		/* Autentica el usuario */
		if (($link_id = ldap_bind($connect, $user_dn, $password)) == false) {
			error_reporting( 0 );
			$mensajeError = "USUARIO O CONTRASE&Ntilde;A INCORRECTOS";
			return $mensajeError;
		}

		return '';
		@ldap_close($connect);
	} 
	else {                                 
		$mensajeError = "no hay conexión a '$ldap_server'";
		return $mensajeError;
	}

	@ldap_close($connect);
	return(false);
}

?>